package co.fitstart.admin.service;

import java.util.Date;
import java.util.List;

import com.demo2do.core.support.Page;

import co.fitstart.entity.coach.CoachSettlement;
import co.fitstart.entity.coach.CoachStudentRelation;
import co.fitstart.entity.principal.Principal;
import co.fitstart.entity.principal.SpecialTags;
import co.fitstart.entity.site.Site;

/**
 * 
 * @author lidan
 *
 */
public interface CoachService {
    
    /**
     * 
     * @param principal
     * @return
     */
    public List<CoachSettlement> listCoachSettlement(Principal principal);
    
    /**
     * 
     * @param principal
     * @param page
     * @return
     */
    public List<CoachStudentRelation> listCoachStudentRelation(Principal principal, Page page);
    
    /**
     * 
     * @param id
     * @return
     */
    public CoachSettlement loadSettlement(Long id);
    
    /**
     * 
     * @param settlement
     */
    public void editSettlement(CoachSettlement settlement);
    
    /**
     * 
     * @param coach
     * @return
     */
    public Site getCoachSite(Principal coach);
    
    /**
     * 
     * @param coach
     * @param day
     * @return
     */
    public List<Site> listCoachSite(Principal coach, Date day);

    /**
     * 
     * @param coachId
     * @return
     */
    public Principal load(Long coachId);
    
    /**
     * 
     * @param site
     * @return
     */
    public List<Principal> listCoach(Site site);
    
    /**
     * 
     * @param site
     * @param code
     * @return
     */
    public List<Principal> listCoach(Site site, SpecialTags tag);
    
    /**
     * 
     * @param sites
     * @return
     */
    public List<Principal> listCoach(List<Site> sites);
    
    /**
     * 
     * @param coach
     * @param manager
     * @param appointDays
     */
    public void editAppointDays(Principal coach, Principal manager, List<Integer> appointDays);
    
    /**
     * 
     * @param coach
     * @param manager
     * @param appointHours
     */
    public void editAppointHours(Principal coach, Principal manager, List<String> appointHours);
    
}
